/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controladoras.apresentacao;
import telas.TelaLogin;
import javax.swing.JOptionPane;
import entidades.Cliente;

/**
 * Classe que implementa a controladora de autenticação.
 * @author thiagostuckert
 */
public class CntrIntAutenticacao {
        /**
        * Atributo utilizado para a instanciação da controladora em questão.
        */
        private static CntrIntAutenticacao ref;
        /**
        * Atributo utilizado para a chamada dos metodos definidos na tela
        * de login.
        */
        private TelaLogin telaLogin;
        /**
         * Atributo utilizado para o login do cliente.
         */
        private Cliente cliente  = new Cliente();

        /**
         * Inicia a execução através da tela de login e seta
         * sua controladora de tela.
         */
        public final void executar() {
            telaLogin = new TelaLogin();
            telaLogin.setControladoraInteracao(this);
            telaLogin.setVisible(true);
        }

        /**
         * Metodo que chama a contraladora de interação para realizar
         * o cadastro de cliente.
         */
        public final void cadastraCliente() {
           CntrIntCliente cntrIntCliente = CntrIntCliente.instanciar();
           cntrIntCliente.mostrarTelaCadastroCliente();
        }
        /**
         * Metodo que chama a contraladora de interação para realizar
         * o cadastro de funcionário.
         */
        public final void cadastraFuncionario() {
           CntrIntFuncionario cntrIntFuncionario =
                   CntrIntFuncionario.instanciar();
           cntrIntFuncionario.mostrarTelaCadastroFuncionario();
        }

        /**
         * Metodo que chama a controladora de interação para realizar a
         * ação de logar o cliente.
         * @param cpf Cpf do cliente que deseja logar.
         */
        public final void logarCliente(final String cpf) {
           CntrIntCliente cntrIntCliente = CntrIntCliente.instanciar();
           try {
               cntrIntCliente.logarCliente(cpf);
           } catch (Exception e) {
               JOptionPane.showMessageDialog(telaLogin, e.getMessage());
           }
        }

        /**
         * Metodo que chama a controladora de interação para realizar a
         * ação de logar o funcionario.
         * @param matricula Matricula do funcionario que deseja logar.
         */
        public final void logarFuncionario(final String matricula) {
           CntrIntFuncionario cntrIntFuncionario =
                   CntrIntFuncionario.instanciar();
           try {
               cntrIntFuncionario.logarFuncionario(matricula);
           } catch (Exception e) {
               JOptionPane.showMessageDialog(telaLogin, e.getMessage());
           }
        }

        /**
         * Método que instancia a controladora de interação de
         * autenticação.
         * @return controladora de autenticação instanciada.
         */
        public static CntrIntAutenticacao instanciar() {
            if (ref == null) {
                ref = new CntrIntAutenticacao();
            }
                return ref;
        }

        /**
         * Encerra a execução do programa.
         */
        public final void encerrar() {
            System.exit(0);
        }

        /**
         * Método que retorna o atributo cliente desta classe.
         * @return cliente Atributo cliente da classe.
         */
        public final Cliente getCliente() {
            return (cliente);
        }
}
